   1              		.syntax unified
   2              		.cpu cortex-m3
   3              		.fpu softvfp
   4              		.eabi_attribute 20, 1
   5              		.eabi_attribute 21, 1
   6              		.eabi_attribute 23, 3
   7              		.eabi_attribute 24, 1
   8              		.eabi_attribute 25, 1
   9              		.eabi_attribute 26, 1
  10              		.eabi_attribute 30, 4
  11              		.eabi_attribute 34, 1
  12              		.eabi_attribute 18, 4
  13              		.thumb
  14              		.syntax unified
  15              		.file	"gkey.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.section	.text.gKey_Init,"ax",%progbits
  20              		.align	1
  21              		.global	gKey_Init
  22              		.thumb
  23              		.thumb_func
  25              	gKey_Init:
  26              	.LFB0:
  27              		.file 1 "uc_libc_dev/keyboard/gkey.c"
   1:uc_libc_dev/keyboard/gkey.c **** #include "gkey.h"
   2:uc_libc_dev/keyboard/gkey.c **** 
   3:uc_libc_dev/keyboard/gkey.c **** // ###########################################################################################
   4:uc_libc_dev/keyboard/gkey.c **** // CONTROLE DO TECLADO
   5:uc_libc_dev/keyboard/gkey.c **** // ###########################################################################################
   6:uc_libc_dev/keyboard/gkey.c **** 
   7:uc_libc_dev/keyboard/gkey.c **** // COMO USAR
   8:uc_libc_dev/keyboard/gkey.c **** //	declarar as funções que deseja processar a tecla pressionada
   9:uc_libc_dev/keyboard/gkey.c **** //	EX:
  10:uc_libc_dev/keyboard/gkey.c **** //		onKeyDown	- Função a ser chamada quando a tecla for pressionada
  11:uc_libc_dev/keyboard/gkey.c **** //		onKeyPress	- Função a ser chamada quando a tecla for mantida pressionada
  12:uc_libc_dev/keyboard/gkey.c **** //		onKeyUp		- Função a ser chamada quando a tecla for solta
  13:uc_libc_dev/keyboard/gkey.c **** 
  14:uc_libc_dev/keyboard/gkey.c **** // anexar as funções as seus respectivos eventos ao inicar o sistema
  15:uc_libc_dev/keyboard/gkey.c **** // gKey_Init(&onKeyDown, &onKeyPress, &onKeyUp);
  16:uc_libc_dev/keyboard/gkey.c **** 
  17:uc_libc_dev/keyboard/gkey.c **** // chamar periodicamente a função de leitura do teclado e gerador de evento
  18:uc_libc_dev/keyboard/gkey.c **** //	A leitura do teclado pode ser de uma serial ou um painel, neste exemplo estamos lendo do painel 
  19:uc_libc_dev/keyboard/gkey.c **** // ATENÇÃO: Tecla pressionada deve ter valor > 0. Nenhuma tecla pressionada deve retornar valor 0
  20:uc_libc_dev/keyboard/gkey.c **** //	void tickSystem (void) { // gerado a cada 1ms
  21:uc_libc_dev/keyboard/gkey.c **** //		pnl403_Tick(); // a chamada para esta função não pode ser menor que 30uS
  22:uc_libc_dev/keyboard/gkey.c **** //
  23:uc_libc_dev/keyboard/gkey.c **** //		static tTime timeRefresh = 0;
  24:uc_libc_dev/keyboard/gkey.c **** //		if (timeRefresh) timeRefresh--;
  25:uc_libc_dev/keyboard/gkey.c **** //		else {
  26:uc_libc_dev/keyboard/gkey.c **** //			timeRefresh = 50;
  27:uc_libc_dev/keyboard/gkey.c **** //
  28:uc_libc_dev/keyboard/gkey.c **** //			static u8 key = 0;
  29:uc_libc_dev/keyboard/gkey.c **** //			pnl403_GetKey(&key);
  30:uc_libc_dev/keyboard/gkey.c **** //			// Gera os eventos onKeyDown, onKeyPress e onKeyUp caso a tecla ou touch foi pressionados
  31:uc_libc_dev/keyboard/gkey.c **** //			key_Process(key); // OU COLOCAR NO LOOP PRINCIPAL DO SISTEMA
  32:uc_libc_dev/keyboard/gkey.c **** //		}
  33:uc_libc_dev/keyboard/gkey.c **** //	}
  34:uc_libc_dev/keyboard/gkey.c **** 
  35:uc_libc_dev/keyboard/gkey.c **** int gkey_FastInc; // sinaliza para o processos externos para incrementar ou decrementar de forma ma
  36:uc_libc_dev/keyboard/gkey.c **** 
  37:uc_libc_dev/keyboard/gkey.c **** #define keyREPEAT keyFASTINC_REPEAT*1000/keyKEYPRESS_REPEAT2;
  38:uc_libc_dev/keyboard/gkey.c **** 
  39:uc_libc_dev/keyboard/gkey.c **** static pkeyFunc onKeyDown = NULL;
  40:uc_libc_dev/keyboard/gkey.c **** static pkeyFunc onKeyPress= NULL;
  41:uc_libc_dev/keyboard/gkey.c **** static pkeyFunc onKeyUp = NULL;
  42:uc_libc_dev/keyboard/gkey.c **** 
  43:uc_libc_dev/keyboard/gkey.c **** // Inicializa que os eventos a serem chamados para onKeyDown, onKeyPress e onKeyUp
  44:uc_libc_dev/keyboard/gkey.c **** // Coloque valor NULL caso não queira que a função seja invocada
  45:uc_libc_dev/keyboard/gkey.c **** //	EX: gkey_Init(onKeyDown, &onKeyPress, &onKeyUp);
  46:uc_libc_dev/keyboard/gkey.c **** 		// se desejar processar a tecla quando a mesma for pressionada, durante o pressionamento
  47:uc_libc_dev/keyboard/gkey.c **** 		//		e quando soltar a tecla
  48:uc_libc_dev/keyboard/gkey.c **** //		gkey_Init(NULL, NULL, &onKeyUp);
  49:uc_libc_dev/keyboard/gkey.c **** 		// se desejar processar a tecla somente a mesma for solta
  50:uc_libc_dev/keyboard/gkey.c **** void gKey_Init(pkeyFunc onKdown, pkeyFunc onKpress, pkeyFunc onKup) {
  28              		.loc 1 50 0
  29              		.cfi_startproc
  30              		@ args = 0, pretend = 0, frame = 0
  31              		@ frame_needed = 0, uses_anonymous_args = 0
  32              		@ link register save eliminated.
  33              	.LVL0:
  51:uc_libc_dev/keyboard/gkey.c **** 	onKeyDown = onKdown;
  34              		.loc 1 51 0
  35 0000 044B     		ldr	r3, .L2
  36 0002 1860     		str	r0, [r3]
  52:uc_libc_dev/keyboard/gkey.c **** 	onKeyPress = onKpress;
  37              		.loc 1 52 0
  38 0004 044B     		ldr	r3, .L2+4
  39 0006 1960     		str	r1, [r3]
  53:uc_libc_dev/keyboard/gkey.c **** 	onKeyUp = onKup;
  40              		.loc 1 53 0
  41 0008 044B     		ldr	r3, .L2+8
  42 000a 1A60     		str	r2, [r3]
  54:uc_libc_dev/keyboard/gkey.c **** 	gkey_FastInc = 0; // sem repetição
  43              		.loc 1 54 0
  44 000c 044B     		ldr	r3, .L2+12
  45 000e 0022     		movs	r2, #0
  46              	.LVL1:
  47 0010 1A60     		str	r2, [r3]
  48 0012 7047     		bx	lr
  49              	.L3:
  50              		.align	2
  51              	.L2:
  52 0014 00000000 		.word	.LANCHOR0
  53 0018 00000000 		.word	.LANCHOR1
  54 001c 00000000 		.word	.LANCHOR2
  55 0020 00000000 		.word	gkey_FastInc
  56              		.cfi_endproc
  57              	.LFE0:
  59              		.section	.text.gKey_Tick,"ax",%progbits
  60              		.align	1
  61              		.global	gKey_Tick
  62              		.thumb
  63              		.thumb_func
  65              	gKey_Tick:
  66              	.LFB1:
  55:uc_libc_dev/keyboard/gkey.c **** }
  56:uc_libc_dev/keyboard/gkey.c **** 
  57:uc_libc_dev/keyboard/gkey.c **** 
  58:uc_libc_dev/keyboard/gkey.c **** // função a ser chamada a cada 1ms
  59:uc_libc_dev/keyboard/gkey.c **** static volatile uint timeRepeat=0;
  60:uc_libc_dev/keyboard/gkey.c **** void gKey_Tick(void) {
  67              		.loc 1 60 0
  68              		.cfi_startproc
  69              		@ args = 0, pretend = 0, frame = 0
  70              		@ frame_needed = 0, uses_anonymous_args = 0
  71              		@ link register save eliminated.
  61:uc_libc_dev/keyboard/gkey.c **** 	if (timeRepeat) timeRepeat--;
  72              		.loc 1 61 0
  73 0000 034B     		ldr	r3, .L10
  74 0002 1A68     		ldr	r2, [r3]
  75 0004 12B1     		cbz	r2, .L4
  76              		.loc 1 61 0 is_stmt 0 discriminator 1
  77 0006 1A68     		ldr	r2, [r3]
  78 0008 013A     		subs	r2, r2, #1
  79 000a 1A60     		str	r2, [r3]
  80              	.L4:
  81 000c 7047     		bx	lr
  82              	.L11:
  83 000e 00BF     		.align	2
  84              	.L10:
  85 0010 00000000 		.word	.LANCHOR3
  86              		.cfi_endproc
  87              	.LFE1:
  89              		.section	.text.gKey_Process,"ax",%progbits
  90              		.align	1
  91              		.global	gKey_Process
  92              		.thumb
  93              		.thumb_func
  95              	gKey_Process:
  96              	.LFB2:
  62:uc_libc_dev/keyboard/gkey.c **** }
  63:uc_libc_dev/keyboard/gkey.c **** 
  64:uc_libc_dev/keyboard/gkey.c **** // Gerador de enventos para tecla pressioada
  65:uc_libc_dev/keyboard/gkey.c **** // A função gKey_Process vai chamar as funções anexadas em onKdown, onKpress, onKup em gKey_Init
  66:uc_libc_dev/keyboard/gkey.c **** // passando o valor da tecla pressionada. São nessas funções que iremos processar a tecla
  67:uc_libc_dev/keyboard/gkey.c **** // ATENÇÃO: Tecla pressionada deve ter valor > 0. Nenhuma tecla pressionada deve retornar valor 0
  68:uc_libc_dev/keyboard/gkey.c **** void gKey_Process(char key) {
  97              		.loc 1 68 0 is_stmt 1
  98              		.cfi_startproc
  99              		@ args = 0, pretend = 0, frame = 0
 100              		@ frame_needed = 0, uses_anonymous_args = 0
 101              	.LVL2:
 102 0000 70B5     		push	{r4, r5, r6, lr}
 103              	.LCFI0:
 104              		.cfi_def_cfa_offset 16
 105              		.cfi_offset 4, -16
 106              		.cfi_offset 5, -12
 107              		.cfi_offset 6, -8
 108              		.cfi_offset 14, -4
  69:uc_libc_dev/keyboard/gkey.c ****     static char keyold=0, keynow=0, estado=0;
  70:uc_libc_dev/keyboard/gkey.c ****     static uint repeat=0;
  71:uc_libc_dev/keyboard/gkey.c **** 
  72:uc_libc_dev/keyboard/gkey.c ****     //verificação da tecla
  73:uc_libc_dev/keyboard/gkey.c ****     keyold = keynow;
 109              		.loc 1 73 0
 110 0002 214A     		ldr	r2, .L44
  74:uc_libc_dev/keyboard/gkey.c ****     keynow = key;
  75:uc_libc_dev/keyboard/gkey.c **** 
  76:uc_libc_dev/keyboard/gkey.c ****     //repetição rapida?
  77:uc_libc_dev/keyboard/gkey.c ****     //gkey_FastInc = repeat==0;					// Sinaliza se é para incrementar/decrementar mais rápido quand
  78:uc_libc_dev/keyboard/gkey.c **** 
  79:uc_libc_dev/keyboard/gkey.c ****     switch (estado) {
 111              		.loc 1 79 0
 112 0004 214D     		ldr	r5, .L44+4
  73:uc_libc_dev/keyboard/gkey.c ****     keynow = key;
 113              		.loc 1 73 0
 114 0006 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
  74:uc_libc_dev/keyboard/gkey.c ****     keynow = key;
 115              		.loc 1 74 0
 116 0008 1070     		strb	r0, [r2]
 117              		.loc 1 79 0
 118 000a 2A78     		ldrb	r2, [r5]	@ zero_extendqisi2
  68:uc_libc_dev/keyboard/gkey.c ****     static char keyold=0, keynow=0, estado=0;
 119              		.loc 1 68 0
 120 000c 0446     		mov	r4, r0
 121              		.loc 1 79 0
 122 000e 12B1     		cbz	r2, .L14
 123 0010 012A     		cmp	r2, #1
 124 0012 18D0     		beq	.L15
 125 0014 70BD     		pop	{r4, r5, r6, pc}
 126              	.L14:
  80:uc_libc_dev/keyboard/gkey.c ****     case 0: 									// Estado de verificação se tecla foi pressionada
  81:uc_libc_dev/keyboard/gkey.c ****     	repeat = keyREPEAT;						// A cada X segundos incrementos o gkey_FastInc
 127              		.loc 1 81 0
 128 0016 1E49     		ldr	r1, .L44+8
 129 0018 0A26     		movs	r6, #10
 130 001a 0E60     		str	r6, [r1]
  82:uc_libc_dev/keyboard/gkey.c **** 		gkey_FastInc = 0;						// Sinaliza para não incrementar de modo rápido
 131              		.loc 1 82 0
 132 001c 1D49     		ldr	r1, .L44+12
 133 001e 0A60     		str	r2, [r1]
  83:uc_libc_dev/keyboard/gkey.c ****     	if ((keyold==0)&&(keynow!=0)) {			// Checa se é a descida da tecla, se sim emitir o evento onK
 134              		.loc 1 83 0
 135 0020 002B     		cmp	r3, #0
 136 0022 2FD1     		bne	.L12
 137              		.loc 1 83 0 is_stmt 0 discriminator 1
 138 0024 0028     		cmp	r0, #0
 139 0026 2DD0     		beq	.L12
  84:uc_libc_dev/keyboard/gkey.c ****             if (onKeyDown) onKeyDown(key);		// Emitir o evento onKeyDown e onKeyPress
 140              		.loc 1 84 0 is_stmt 1
 141 0028 1B4B     		ldr	r3, .L44+16
 142 002a 1B68     		ldr	r3, [r3]
 143 002c 03B1     		cbz	r3, .L18
 144              		.loc 1 84 0 is_stmt 0 discriminator 1
 145 002e 9847     		blx	r3
 146              	.LVL3:
 147              	.L18:
  85:uc_libc_dev/keyboard/gkey.c ****             if (onKeyPress) onKeyPress(key);	// Emitir o evento onKeyPress
 148              		.loc 1 85 0 is_stmt 1
 149 0030 1A4B     		ldr	r3, .L44+20
 150 0032 1B68     		ldr	r3, [r3]
 151 0034 0BB1     		cbz	r3, .L19
 152              		.loc 1 85 0 is_stmt 0 discriminator 1
 153 0036 2046     		mov	r0, r4
 154 0038 9847     		blx	r3
 155              	.LVL4:
 156              	.L19:
  86:uc_libc_dev/keyboard/gkey.c ****             timeRepeat = keyKEYPRESS_REPEAT1;	// Determina em que tempo vamos repetir o evento onKe
 157              		.loc 1 86 0 is_stmt 1
 158 003a 194B     		ldr	r3, .L44+24
 159 003c 4FF4FA72 		mov	r2, #500
 160 0040 1A60     		str	r2, [r3]
  87:uc_libc_dev/keyboard/gkey.c ****     		estado = 1;							// Vá para o estado de verificação de tecla precionada
 161              		.loc 1 87 0
 162 0042 0123     		movs	r3, #1
 163 0044 07E0     		b	.L42
 164              	.LVL5:
 165              	.L15:
  88:uc_libc_dev/keyboard/gkey.c ****     	}
  89:uc_libc_dev/keyboard/gkey.c ****     	break;
  90:uc_libc_dev/keyboard/gkey.c ****     case 1: 									// Estado de verificação se a tecla esta sendo pressionada ou tecla foi solta
  91:uc_libc_dev/keyboard/gkey.c ****     	if ((keyold!=0)&&(keynow==0)) {			// Checa se é a subida da tecla, se sim emitir o evento onKe
 166              		.loc 1 91 0
 167 0046 43B1     		cbz	r3, .L20
 168              		.loc 1 91 0 is_stmt 0 discriminator 1
 169 0048 38B9     		cbnz	r0, .L20
  92:uc_libc_dev/keyboard/gkey.c ****     		if (onKeyUp) onKeyUp(keyold);
 170              		.loc 1 92 0 is_stmt 1
 171 004a 164A     		ldr	r2, .L44+28
 172 004c 1268     		ldr	r2, [r2]
 173 004e 0AB1     		cbz	r2, .L21
 174              		.loc 1 92 0 is_stmt 0 discriminator 1
 175 0050 1846     		mov	r0, r3
 176              	.LVL6:
 177 0052 9047     		blx	r2
 178              	.LVL7:
 179              	.L21:
  93:uc_libc_dev/keyboard/gkey.c ****     		estado = 0;							// Volta ao estado para esperar a próxima tecla a ser pressionada
 180              		.loc 1 93 0 is_stmt 1
 181 0054 0023     		movs	r3, #0
 182              	.L42:
 183 0056 2B70     		strb	r3, [r5]
 184 0058 70BD     		pop	{r4, r5, r6, pc}
 185              	.LVL8:
 186              	.L20:
  94:uc_libc_dev/keyboard/gkey.c ****     	} else if (timeRepeat == 0) {					// Checa se está na hora de repetir o evento onKeyPress
 187              		.loc 1 94 0
 188 005a 114B     		ldr	r3, .L44+24
 189 005c 1A68     		ldr	r2, [r3]
 190 005e 8AB9     		cbnz	r2, .L12
  95:uc_libc_dev/keyboard/gkey.c ****             timeRepeat = keyKEYPRESS_REPEAT2; 		// Determina em que tempo vamos repetir o evento on
 191              		.loc 1 95 0
 192 0060 6422     		movs	r2, #100
 193 0062 1A60     		str	r2, [r3]
  96:uc_libc_dev/keyboard/gkey.c ****             if (onKeyPress) onKeyPress(key);	// Chama o evento onKeyPress
 194              		.loc 1 96 0
 195 0064 0D4B     		ldr	r3, .L44+20
 196 0066 1B68     		ldr	r3, [r3]
 197 0068 0BB1     		cbz	r3, .L22
 198              		.loc 1 96 0 is_stmt 0 discriminator 1
 199 006a 2046     		mov	r0, r4
 200              	.LVL9:
 201 006c 9847     		blx	r3
 202              	.LVL10:
 203              	.L22:
  97:uc_libc_dev/keyboard/gkey.c **** 
  98:uc_libc_dev/keyboard/gkey.c ****             // checar o momento de incrementar a var FastInc
  99:uc_libc_dev/keyboard/gkey.c ****             if (repeat) repeat--;
 204              		.loc 1 99 0 is_stmt 1
 205 006e 084A     		ldr	r2, .L44+8
 206 0070 1368     		ldr	r3, [r2]
 207 0072 0BB1     		cbz	r3, .L23
 208              		.loc 1 99 0 is_stmt 0 discriminator 1
 209 0074 013B     		subs	r3, r3, #1
 210 0076 04E0     		b	.L43
 211              	.L23:
 100:uc_libc_dev/keyboard/gkey.c ****             else {
 101:uc_libc_dev/keyboard/gkey.c ****             	repeat = keyREPEAT;
 212              		.loc 1 101 0 is_stmt 1
 213 0078 0A23     		movs	r3, #10
 214 007a 1360     		str	r3, [r2]
 102:uc_libc_dev/keyboard/gkey.c ****             	gkey_FastInc++;
 215              		.loc 1 102 0
 216 007c 054A     		ldr	r2, .L44+12
 217 007e 1368     		ldr	r3, [r2]
 218 0080 0133     		adds	r3, r3, #1
 219              	.L43:
 220 0082 1360     		str	r3, [r2]
 221              	.L12:
 222 0084 70BD     		pop	{r4, r5, r6, pc}
 223              	.L45:
 224 0086 00BF     		.align	2
 225              	.L44:
 226 0088 00000000 		.word	.LANCHOR4
 227 008c 00000000 		.word	.LANCHOR5
 228 0090 00000000 		.word	.LANCHOR6
 229 0094 00000000 		.word	gkey_FastInc
 230 0098 00000000 		.word	.LANCHOR0
 231 009c 00000000 		.word	.LANCHOR1
 232 00a0 00000000 		.word	.LANCHOR3
 233 00a4 00000000 		.word	.LANCHOR2
 234              		.cfi_endproc
 235              	.LFE2:
 237              		.comm	gkey_FastInc,4,4
 238              		.section	.bss.repeat.4250,"aw",%nobits
 239              		.align	2
 240              		.set	.LANCHOR6,. + 0
 243              	repeat.4250:
 244 0000 00000000 		.space	4
 245              		.section	.bss.estado.4249,"aw",%nobits
 246              		.set	.LANCHOR5,. + 0
 249              	estado.4249:
 250 0000 00       		.space	1
 251              		.section	.bss.onKeyUp,"aw",%nobits
 252              		.align	2
 253              		.set	.LANCHOR2,. + 0
 256              	onKeyUp:
 257 0000 00000000 		.space	4
 258              		.section	.bss.timeRepeat,"aw",%nobits
 259              		.align	2
 260              		.set	.LANCHOR3,. + 0
 263              	timeRepeat:
 264 0000 00000000 		.space	4
 265              		.section	.bss.keynow.4248,"aw",%nobits
 266              		.set	.LANCHOR4,. + 0
 269              	keynow.4248:
 270 0000 00       		.space	1
 271              		.section	.bss.onKeyDown,"aw",%nobits
 272              		.align	2
 273              		.set	.LANCHOR0,. + 0
 276              	onKeyDown:
 277 0000 00000000 		.space	4
 278              		.section	.bss.onKeyPress,"aw",%nobits
 279              		.align	2
 280              		.set	.LANCHOR1,. + 0
 283              	onKeyPress:
 284 0000 00000000 		.space	4
 285              		.text
 286              	.Letext0:
 287              		.file 2 "uc_libc_dev/_libdef/uc_libdefs.h"
 288              		.file 3 "uc_libc_dev/keyboard/gkey.h"
DEFINED SYMBOLS
                            *ABS*:00000000 gkey.c
D:\_temp\_windows\ccaJLChr.s:20     .text.gKey_Init:00000000 $t
D:\_temp\_windows\ccaJLChr.s:25     .text.gKey_Init:00000000 gKey_Init
D:\_temp\_windows\ccaJLChr.s:52     .text.gKey_Init:00000014 $d
                            *COM*:00000004 gkey_FastInc
D:\_temp\_windows\ccaJLChr.s:60     .text.gKey_Tick:00000000 $t
D:\_temp\_windows\ccaJLChr.s:65     .text.gKey_Tick:00000000 gKey_Tick
D:\_temp\_windows\ccaJLChr.s:85     .text.gKey_Tick:00000010 $d
D:\_temp\_windows\ccaJLChr.s:90     .text.gKey_Process:00000000 $t
D:\_temp\_windows\ccaJLChr.s:95     .text.gKey_Process:00000000 gKey_Process
D:\_temp\_windows\ccaJLChr.s:226    .text.gKey_Process:00000088 $d
D:\_temp\_windows\ccaJLChr.s:239    .bss.repeat.4250:00000000 $d
D:\_temp\_windows\ccaJLChr.s:243    .bss.repeat.4250:00000000 repeat.4250
D:\_temp\_windows\ccaJLChr.s:249    .bss.estado.4249:00000000 estado.4249
D:\_temp\_windows\ccaJLChr.s:250    .bss.estado.4249:00000000 $d
D:\_temp\_windows\ccaJLChr.s:252    .bss.onKeyUp:00000000 $d
D:\_temp\_windows\ccaJLChr.s:256    .bss.onKeyUp:00000000 onKeyUp
D:\_temp\_windows\ccaJLChr.s:259    .bss.timeRepeat:00000000 $d
D:\_temp\_windows\ccaJLChr.s:263    .bss.timeRepeat:00000000 timeRepeat
D:\_temp\_windows\ccaJLChr.s:269    .bss.keynow.4248:00000000 keynow.4248
D:\_temp\_windows\ccaJLChr.s:270    .bss.keynow.4248:00000000 $d
D:\_temp\_windows\ccaJLChr.s:272    .bss.onKeyDown:00000000 $d
D:\_temp\_windows\ccaJLChr.s:276    .bss.onKeyDown:00000000 onKeyDown
D:\_temp\_windows\ccaJLChr.s:279    .bss.onKeyPress:00000000 $d
D:\_temp\_windows\ccaJLChr.s:283    .bss.onKeyPress:00000000 onKeyPress
                     .debug_frame:00000010 $d

NO UNDEFINED SYMBOLS
